Skip to content

ci(review-debt-guard): 빚의 기준을 «리뷰어의 공이 남은 PR» 로 [base: develop] - #1148

Merged
1hyok merged 3 commits into
developfrom
ci/review-debt-any-open-pr
Aug 25, 2026
Merged

1hyok merged 3 commits into
developfrom
ci/review-debt-any-open-pr

Conversation

@1hyok

@1hyok 1hyok commented Aug 25, 2026 •

Copy link
Copy Markdown
Collaborator

리뷰 요청은 알림 수단이지 담당 배정이 아니다. 누구에게 걸렸든 팀에서 한 사람이 리뷰하면 그 PR 의 리뷰는 채워진 것이고, 반대로 아무도 응하지 않은 PR 이 남아 있으면 요청을 받았든 아니든 리뷰를 미룬 것이다.

종전 판정의 문제는 두 가지였다.

  • review-requested:<나> 로 조회해서, 나에게 요청이 안 걸린 PR 은 아무도 리뷰하지 않았어도 내 빚이 아니었다.
  • «마지막 실질 변경 이후» 리뷰가 있어야 응답으로 쳐서, 한 번 승인한 PR 도 작성자가 손대면 다시 빚이 됐다.

무엇을 바꿨나

① 판정 대상을 열린 PR 전체로 — 요청 목록이 아니라 저장소의 열린 PR 을 훑는다. 자기 PR(자신이 리뷰할 수 없음)과 draft(리뷰받을 상태가 아님)는 제외한다.

② 승인과 변경요청을 구분한다

상태 의미 이후 변경
APPROVED 머지 가능 작성자 몫. 다시 봐 줄 의무 없음
CHANGES_REQUESTED 끝난 판정이 아님 반영되는 순간 다시 리뷰어의 몫

변경요청을 «판정 1건» 으로 묶어 버리면, 지적을 받고 반영까지 끝낸 PR 을 아무도 다시 볼 의무가 없어져 그 PR 이 갇힌다. 그래서 빚은 두 종류다.

  1. 아무도 판정을 내지 않은 PR
  2. 미해소 변경요청이 있는데 작성자가 이미 반영 커밋을 올린 PR

변경요청 뒤로 새 커밋이 없으면 공은 아직 작성자에게 있으므로 빚이 아니다. 반영 여부는 병합 커밋(parents 2개 이상)을 뺀 실질 커밋으로만 센다 — develop 전파는 반영이 아니다.

review-request-all 은 그대로 둔다. 판정에서는 빠지지만 알림·GitHub UI 필터 역할은 그대로다.

실측

로컬에서 gh pr close 직전까지 드라이런한 결과다.

종전 수정 후
koongmai 23 11
Sadturtleman 10 11
1hyok 0 0 (통과)

판정 근거 표본:

#1133  아무도 판정하지 않음                     → 빚
#966   승인됨                                  → 빚 아님
#821   변경요청 반영(4커밋) 뒤 재리뷰 없음        → 빚
#958   변경요청 미반영, 공은 작성자에게           → 빚 아님

빚 11건은 #810 #821 #863 #914 #972 #1094 #1098(반영 후 재리뷰 없음) + #1133 #1134 #1138 #1139(아무도 안 봄)이고 전부 1hyok 의 PR 이라, 두 사람에게 각각 11건으로 잡힌다.

검증

YAML 파싱과 두 job 의 bash -n 통과. 위 수치와 판정 근거는 워크플로의 run 블록을 그대로 추출해 실행한 것이라 실제 판정과 같은 코드다.

시각 변경 없음.

리뷰 요청은 알림 수단이지 담당 배정이 아니다. 누구에게 걸렸든 팀에서 한 사람이
리뷰하면 그 PR 은 끝난 것이고, 반대로 아무도 응답하지 않은 PR 이 남아 있으면
요청을 받았든 아니든 리뷰를 미룬 것이다.

그래서 판정 대상을 review-requested 검색이 아니라 열린 PR 전체로 바꾼다.
자기 PR 은 자신이 리뷰할 수 없으므로 빼고, draft 는 리뷰받을 상태가 아니므로 뺀다.

실측(로컬 드라이런, close 직전까지):

    koongmai      22
    Sadturtleman  20
    1hyok          2

열린 non-draft PR 48건 중 아무도 응답하지 않은 것이 22건이고, 그중 20건이
1hyok 의 PR 이라 사람마다 빚이 다르게 잡힌다.
@github-actions

Copy link
Copy Markdown
Contributor

🚧 리뷰 적체 가드 — 이 PR 을 닫습니다

@1hyok 님이 아직 리뷰하지 않았고 다른 누구도 응답하지 않은 PR 이 2건 있습니다.

PR 열린 날 경과 제목
#987 2026-08-24 1일 fix(mindrecord): 임시저장 목록에서 데일리질문 이어쓰기를 연다
#966 2026-08-23 2일 fix(mindrecord): 첫 진입 요청을 7건에서 2건으로 줄인다 — 프리페치·ON_RESUME 중복 제거

이 저장소는 아무도 응답하지 않은 PR 이 1건이라도 남아 있으면 새 PR 을 열 수 없습니다 (#1136).

각 PR 에 필요한 리뷰는 한 건입니다 — 팀에서 누구든 먼저 판정을 내면 그 PR 은 모두의 목록에서 빠집니다. 리뷰 요청이 나에게 걸렸는지는 무관합니다.

되살리는 법

위 리뷰를 끝낸 뒤 이 PR 을 다시 여세요. 브랜치는 지워지지 않았고 커밋도 그대로입니다.

gh pr reopen 1148

리뷰보다 이 PR 이 급하면 review-debt-exempt 라벨을 붙이고 다시 열면 통과합니다.

@github-actions github-actions Bot closed this Aug 25, 2026
승인 뒤에 작성자가 손보는 것은 작성자 몫이고, 그 변경을 다시 봐 줄 의무는
누구에게도 없다. 리뷰가 다시 필요하면 작성자가 요청을 걸면 된다.

그래서 «마지막 실질 변경 이후» 라는 시점 조건을 걷어낸다. 판정
(APPROVED·CHANGES_REQUESTED)이 한 번이라도 나온 PR 은 빚에서 제외한다.

커밋 시각을 볼 일이 없어져 parents 조회가 통째로 빠지고, PR 당 API 가 2회에서
1회로 준다. 가드 실행도 그만큼 짧아진다.

실측(로컬 드라이런, close 직전까지):

    koongmai      4
    Sadturtleman  4
    1hyok         0 (통과)

열린 non-draft PR 48건 중 판정이 한 번도 없는 것은 #1133 #1134 #1138 #1139
넷뿐이고 모두 1hyok 의 PR 이라, 두 사람의 빚이 각각 4건으로 잡힌다.
@1hyok 1hyok changed the title ci(review-debt-guard): 빚의 기준을 «아무도 응답 안 한 PR» 로 [base: develop] ci(review-debt-guard): 빚의 기준을 «아무도 리뷰 안 한 PR» 로 [base: develop] Aug 25, 2026
승인과 변경요청의 무게가 다르다.

  APPROVED           머지 가능한 상태다. 그 뒤 작성자가 손보는 것은 작성자 몫이고
                     다시 봐 줄 의무는 누구에게도 없다.
  CHANGES_REQUESTED  끝난 판정이 아니다. 작성자가 지적을 반영하면 공이 리뷰어에게
                     돌아온다. 재리뷰가 없으면 그 PR 은 영영 머지되지 못한다.

직전 커밋은 둘을 «판정 1건» 으로 묶어, 변경요청을 받고 반영까지 끝낸 #821 이
빚에서 빠졌다. 그 상태로는 아무도 재리뷰할 의무가 없어 PR 이 갇힌다.

그래서 빚을 두 종류로 나눈다.

  1. 아무도 판정을 내지 않은 PR
  2. 미해소 변경요청이 있는데 작성자가 이미 반영 커밋을 올린 PR

변경요청 뒤로 새 커밋이 없으면 공은 아직 작성자에게 있으므로 빚이 아니다.
반영 여부는 병합 커밋(parents 2개 이상)을 뺀 실질 커밋으로만 센다.

실측(로컬 드라이런, close 직전까지):

    koongmai      11
    Sadturtleman  11
    1hyok          0 (통과)

    #1133  아무도 판정하지 않음
    #966   승인됨, 빚 아님
    #821   변경요청 반영(4커밋) 뒤 재리뷰 없음
    #958   변경요청 미반영, 공은 작성자에게
@1hyok 1hyok changed the title ci(review-debt-guard): 빚의 기준을 «아무도 리뷰 안 한 PR» 로 [base: develop] ci(review-debt-guard): 빚의 기준을 «리뷰어의 공이 남은 PR» 로 [base: develop] Aug 25, 2026
@1hyok 1hyok reopened this Aug 25, 2026
@github-actions

Copy link
Copy Markdown
Contributor

🚧 리뷰 적체 가드 — 이 PR 을 닫습니다

@1hyok 님이 아직 리뷰하지 않았고 다른 누구도 응답하지 않은 PR 이 2건 있습니다.

PR 열린 날 경과 제목
#987 2026-08-24 1일 fix(mindrecord): 임시저장 목록에서 데일리질문 이어쓰기를 연다
#966 2026-08-23 2일 fix(mindrecord): 첫 진입 요청을 7건에서 2건으로 줄인다 — 프리페치·ON_RESUME 중복 제거

이 저장소는 아무도 응답하지 않은 PR 이 1건이라도 남아 있으면 새 PR 을 열 수 없습니다 (#1136).

각 PR 에 필요한 리뷰는 한 건입니다 — 팀에서 누구든 먼저 판정을 내면 그 PR 은 모두의 목록에서 빠집니다. 리뷰 요청이 나에게 걸렸는지는 무관합니다.

되살리는 법

위 리뷰를 끝낸 뒤 이 PR 을 다시 여세요. 브랜치는 지워지지 않았고 커밋도 그대로입니다.

gh pr reopen 1148

리뷰보다 이 PR 이 급하면 review-debt-exempt 라벨을 붙이고 다시 열면 통과합니다.

@github-actions github-actions Bot closed this Aug 25, 2026
@1hyok 1hyok reopened this Aug 25, 2026
@1hyok
1hyok merged commit 2af6d9d into develop Aug 25, 2026
25 of 30 checks passed
@1hyok
1hyok deleted the ci/review-debt-any-open-pr branch August 25, 2026 12:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant